In [251]:
#Step 1: Load libraries for the U-net Model
import numpy as np 
import os
import cv2
import skimage.io as io
import skimage.transform as trans
import numpy as np
from keras.models import Model
from keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate, Conv2DTranspose, BatchNormalization, Dropout, Lambda
from tensorflow.keras.models import *
from tensorflow.keras.layers import *
from tensorflow.keras.optimizers import *
from tensorflow.keras.callbacks import ModelCheckpoint, LearningRateScheduler
from tensorflow.keras import backend as keras
#from tensorflow import keras
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import skimage.io as io
import skimage.transform as trans
import matplotlib.pyplot as plt
import scipy.misc as sc
import glob
In [253]:
from patchify import patchify, unpatchify

Steps taken to solve this problems¶

Train image = 5, Train mask =5, Val image =2 and Val mask =2 with 3 classes¶

As Image Size is in order of 1000, even 10000. Before training we have to make pathces of images and mask.¶

It was observed that image and mask are in multiple of 256, so made pathces with dimension of (256,256,3), This created around 6000 patches. While training resource is not enough on kaggle to train such huge daatsets. So I trained with only 1000 patches, but accuracy was not good. So I put one condition while creating patch like ignore pathches which has only "Black " class. This generated around 1500 patches.¶

Base Model definition : Input as 3 channel RGB image with 3 classes as output¶

In [254]:
# Base UNET Model
def multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3):
    
    inputs = Input((IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS))
    s = Lambda(lambda x: x / 255)(inputs)   #No need for this if we normalize our inputs beforehand
    #s = inputs

    #Contraction path
    c1 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(s)
    c1 = Dropout(0.1)(c1)
    c1 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c1)
    p1 = MaxPooling2D((2, 2))(c1)
    
    c2 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p1)
    c2 = Dropout(0.1)(c2)
    c2 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c2)
    p2 = MaxPooling2D((2, 2))(c2)
     
    c3 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p2)
    c3 = Dropout(0.2)(c3)
    c3 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c3)
    p3 = MaxPooling2D((2, 2))(c3)
     
    c4 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p3)
    c4 = Dropout(0.2)(c4)
    c4 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c4)
    p4 = MaxPooling2D(pool_size=(2, 2))(c4)
     
    c5 = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(p4)
    c5 = Dropout(0.3)(c5)
    c5 = Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c5)
    
    #Expansive path 
    u6 = Conv2DTranspose(128, (2, 2), strides=(2, 2), padding='same')(c5)
    u6 = concatenate([u6, c4])
    c6 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u6)
    c6 = Dropout(0.2)(c6)
    c6 = Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c6)
     
    u7 = Conv2DTranspose(64, (2, 2), strides=(2, 2), padding='same')(c6)
    u7 = concatenate([u7, c3])
    c7 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u7)
    c7 = Dropout(0.2)(c7)
    c7 = Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c7)
     
    u8 = Conv2DTranspose(32, (2, 2), strides=(2, 2), padding='same')(c7)
    u8 = concatenate([u8, c2])
    c8 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u8)
    c8 = Dropout(0.1)(c8)
    c8 = Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c8)
     
    u9 = Conv2DTranspose(16, (2, 2), strides=(2, 2), padding='same')(c8)
    u9 = concatenate([u9, c1], axis=3)
    c9 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(u9)
    c9 = Dropout(0.1)(c9)
    c9 = Conv2D(16, (3, 3), activation='relu', kernel_initializer='he_normal', padding='same')(c9)
     
    outputs = Conv2D(n_classes, (1, 1), activation='softmax')(c9)
     
    model = Model(inputs=[inputs], outputs=[outputs])
    
    #model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    
    #model.summary()
    
    return model

Condition to filter patches having atleast two classes info in pixel¶

In [ ]:
## Run for each image and its corresponding mask
train_image_path = original_data_dir + "Train_Image/" +"img5.png"
train_mask_path = original_data_dir + "Train_Mask/" +"img5_mask.png"
large_image = cv2.imread(train_image_path)
large_mask = cv2.imread(train_mask_path)


patches_mask = patchify(large_mask, (256, 256,3), step=256)  #Step=256 for 256 patches means no overlap   
patches_img = patchify(large_image, (256, 256,3), step=256)  #Step=256 for 256 patches means no overlap
    
for i in range(patches_img.shape[0]):
    for j in range(patches_img.shape[1]):
            
        single_patch_img = patches_img[i,j,:,:,:]
        single_patch_mask = patches_mask[i,j,:,:,:]
        if len(list(np.unique(single_patch_mask))) > 1:
            
            print("Unique value in patches : ", np.unique(single_patch_mask))
            cv2.imwrite(original_data_dir + 'patches_unique/images/' + 'img5_' + '_' + str(i)+str(j)+ ".png", single_patch_img[0])
            cv2.imwrite(original_data_dir + 'patches_unique/masks/' + 'img5_mask_' + '_' + str(i)+str(j)+ ".png", single_patch_mask[0])   

Loading the datasets as RGB images¶

In [234]:
SIZE_X = 256 
SIZE_Y = 256
IMG_CHANNELS = 3
n_classes = 3 #Number of classes for segmentation
train_img_path = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/patches_unique/images"
train_mask_path = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/patches_unique/masks"
#Capture training image info as a list
train_images = []


for img_path in sorted(glob.glob(os.path.join(train_img_path, "*.png"))):
    img = cv2.imread(img_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    train_images.append(img)
       
#Convert list to array for machine learning processing        
train_images = np.array(train_images)

#Capture mask/label info as a list
train_masks = [] 

for mask_path in sorted(glob.glob(os.path.join(train_mask_path, "*.png"))):
    mask = cv2.imread(mask_path)
    mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
    #mask = cv2.resize(mask, (SIZE_Y, SIZE_X), interpolation = cv2.INTER_NEAREST)  #Otherwise ground truth changes due to interpolation
    train_masks.append(mask)
    
train_masks = np.array(train_masks)
In [235]:
print(f"train_images' shape : {train_images.shape} and train_masks' shape: {train_masks.shape} ")
train_images' shape : (1537, 256, 256, 3) and train_masks' shape: (1537, 256, 256, 3) 
In [168]:
import random
import numpy as np
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()
In [169]:
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()
In [171]:
image_number = random.randint(0, train_images.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(train_images[image_number])
plt.subplot(122)
plt.imshow(train_masks[image_number])
plt.show()

We have 3 classes: Black, Red, Yellow, Lets encode these color mask as one hot encoding for training the model¶

In [236]:
def rgb_to_2D_label(label):
    """
    Suply our labale masks as input in RGB format. 
    Replace pixels with specific RGB values ...
    """
    label_seg = np.zeros(label.shape,dtype=np.uint8)
    label_seg [np.all(label == Black,axis=-1)] = 0    # 0 for black color
    label_seg [np.all(label==Red,axis=-1)] = 1        # 1 for red color
    label_seg [np.all(label==Yellow,axis=-1)] = 2     # 2 for yellow color
    
    label_seg = label_seg[:,:,0]  #Just take the first channel, no need for all 3 channels
    
    return label_seg

Black = np.array([0,0,0])  ## Color code for each classes
Red = np.array([255,0,0])
Yellow = np.array([255,255,0])

mask_labels = []
for i in range(train_masks.shape[0]):
    label = rgb_to_2D_label(train_masks[i])
    mask_labels.append(label)    

mask_labels = np.array(mask_labels)
print("Mask labels shape :", mask_labels.shape)
mask_labels = np.expand_dims(mask_labels, axis=3)
print("Mask labels shape after expanding shape :", mask_labels.shape) 

print("Unique labels in label dataset are: ", np.unique(mask_labels))
Mask labels shape : (1537, 256, 256)
Mask labels shape after expanding shape : (1537, 256, 256, 1)
Unique labels in label dataset are:  [0 1 2]

Plotting few mask and it's corresponding image to see if encoding has been done properly¶

In [195]:
image_number = random.randint(0, mask_labels.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.title("Mask")
plt.imshow(mask_labels[image_number])
plt.subplot(122)
plt.title("Image")
plt.imshow(train_images[image_number][:,:,0])
plt.show()
In [201]:
image_number = random.randint(0, mask_labels.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.title("Mask")
plt.imshow(mask_labels[image_number])
plt.subplot(122)
plt.title("Image")
plt.imshow(train_images[image_number][:,:,0])
plt.show()
In [237]:
from sklearn.utils.class_weight import compute_class_weight

weights = compute_class_weight(class_weight = 'balanced', classes = np.unique(np.ravel(mask_labels,order='C')), 
                               y = np.ravel(mask_labels,order='C'))
print("Weight for Each class is :", weights)
Weight for Each class is : [1.37049319 1.32881155 0.65885549]
In [238]:
train_images.shape, mask_labels.shape
Out[238]:
((1537, 256, 256, 3), (1537, 256, 256, 1))
In [239]:
n_classes = 3 # 3 classes
from keras.utils import to_categorical
labels_cat = to_categorical(mask_labels, num_classes=n_classes)
In [240]:
train_images.shape, labels_cat.shape
Out[240]:
((1537, 256, 256, 3), (1537, 256, 256, 3))
In [243]:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(train_images, labels_cat, test_size = 0.10, random_state = 42)
In [244]:
X_train.shape, X_test.shape, y_train.shape, y_test.shape
Out[244]:
((1383, 256, 256, 3),
 (154, 256, 256, 3),
 (1383, 256, 256, 3),
 (154, 256, 256, 3))
In [245]:
print("Checking shape of labels_cat: ", labels_cat.shape)
print("Checking one hot encoding for one mask")
print("shape is :", labels_cat[1].shape)
labels_cat[1]
Checking shape of labels_cat:  (1537, 256, 256, 3)
Checking one hot encoding for one mask
shape is : (256, 256, 3)
Out[245]:
array([[[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       [[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       [[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 0., 1.],
        [0., 0., 1.],
        [0., 0., 1.]],

       ...,

       [[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.]],

       [[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.]],

       [[0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.],
        ...,
        [0., 1., 0.],
        [0., 1., 0.],
        [0., 1., 0.]]], dtype=float32)

Compiling model and training it for 50 epoch with batch size of 40, Here I will use binary crossentropy as loss function.¶

(Note: I will train model in kaggle and will import here for validation result generation and calculating matrix)¶

In [246]:
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
Model: "model_6"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_7 (InputLayer)           [(None, 256, 256, 3  0           []                               
                                )]                                                                
                                                                                                  
 lambda_6 (Lambda)              (None, 256, 256, 3)  0           ['input_7[0][0]']                
                                                                                                  
 conv2d_114 (Conv2D)            (None, 256, 256, 16  448         ['lambda_6[0][0]']               
                                )                                                                 
                                                                                                  
 dropout_54 (Dropout)           (None, 256, 256, 16  0           ['conv2d_114[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_115 (Conv2D)            (None, 256, 256, 16  2320        ['dropout_54[0][0]']             
                                )                                                                 
                                                                                                  
 max_pooling2d_24 (MaxPooling2D  (None, 128, 128, 16  0          ['conv2d_115[0][0]']             
 )                              )                                                                 
                                                                                                  
 conv2d_116 (Conv2D)            (None, 128, 128, 32  4640        ['max_pooling2d_24[0][0]']       
                                )                                                                 
                                                                                                  
 dropout_55 (Dropout)           (None, 128, 128, 32  0           ['conv2d_116[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_117 (Conv2D)            (None, 128, 128, 32  9248        ['dropout_55[0][0]']             
                                )                                                                 
                                                                                                  
 max_pooling2d_25 (MaxPooling2D  (None, 64, 64, 32)  0           ['conv2d_117[0][0]']             
 )                                                                                                
                                                                                                  
 conv2d_118 (Conv2D)            (None, 64, 64, 64)   18496       ['max_pooling2d_25[0][0]']       
                                                                                                  
 dropout_56 (Dropout)           (None, 64, 64, 64)   0           ['conv2d_118[0][0]']             
                                                                                                  
 conv2d_119 (Conv2D)            (None, 64, 64, 64)   36928       ['dropout_56[0][0]']             
                                                                                                  
 max_pooling2d_26 (MaxPooling2D  (None, 32, 32, 64)  0           ['conv2d_119[0][0]']             
 )                                                                                                
                                                                                                  
 conv2d_120 (Conv2D)            (None, 32, 32, 128)  73856       ['max_pooling2d_26[0][0]']       
                                                                                                  
 dropout_57 (Dropout)           (None, 32, 32, 128)  0           ['conv2d_120[0][0]']             
                                                                                                  
 conv2d_121 (Conv2D)            (None, 32, 32, 128)  147584      ['dropout_57[0][0]']             
                                                                                                  
 max_pooling2d_27 (MaxPooling2D  (None, 16, 16, 128)  0          ['conv2d_121[0][0]']             
 )                                                                                                
                                                                                                  
 conv2d_122 (Conv2D)            (None, 16, 16, 256)  295168      ['max_pooling2d_27[0][0]']       
                                                                                                  
 dropout_58 (Dropout)           (None, 16, 16, 256)  0           ['conv2d_122[0][0]']             
                                                                                                  
 conv2d_123 (Conv2D)            (None, 16, 16, 256)  590080      ['dropout_58[0][0]']             
                                                                                                  
 conv2d_transpose_24 (Conv2DTra  (None, 32, 32, 128)  131200     ['conv2d_123[0][0]']             
 nspose)                                                                                          
                                                                                                  
 concatenate_24 (Concatenate)   (None, 32, 32, 256)  0           ['conv2d_transpose_24[0][0]',    
                                                                  'conv2d_121[0][0]']             
                                                                                                  
 conv2d_124 (Conv2D)            (None, 32, 32, 128)  295040      ['concatenate_24[0][0]']         
                                                                                                  
 dropout_59 (Dropout)           (None, 32, 32, 128)  0           ['conv2d_124[0][0]']             
                                                                                                  
 conv2d_125 (Conv2D)            (None, 32, 32, 128)  147584      ['dropout_59[0][0]']             
                                                                                                  
 conv2d_transpose_25 (Conv2DTra  (None, 64, 64, 64)  32832       ['conv2d_125[0][0]']             
 nspose)                                                                                          
                                                                                                  
 concatenate_25 (Concatenate)   (None, 64, 64, 128)  0           ['conv2d_transpose_25[0][0]',    
                                                                  'conv2d_119[0][0]']             
                                                                                                  
 conv2d_126 (Conv2D)            (None, 64, 64, 64)   73792       ['concatenate_25[0][0]']         
                                                                                                  
 dropout_60 (Dropout)           (None, 64, 64, 64)   0           ['conv2d_126[0][0]']             
                                                                                                  
 conv2d_127 (Conv2D)            (None, 64, 64, 64)   36928       ['dropout_60[0][0]']             
                                                                                                  
 conv2d_transpose_26 (Conv2DTra  (None, 128, 128, 32  8224       ['conv2d_127[0][0]']             
 nspose)                        )                                                                 
                                                                                                  
 concatenate_26 (Concatenate)   (None, 128, 128, 64  0           ['conv2d_transpose_26[0][0]',    
                                )                                 'conv2d_117[0][0]']             
                                                                                                  
 conv2d_128 (Conv2D)            (None, 128, 128, 32  18464       ['concatenate_26[0][0]']         
                                )                                                                 
                                                                                                  
 dropout_61 (Dropout)           (None, 128, 128, 32  0           ['conv2d_128[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_129 (Conv2D)            (None, 128, 128, 32  9248        ['dropout_61[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_transpose_27 (Conv2DTra  (None, 256, 256, 16  2064       ['conv2d_129[0][0]']             
 nspose)                        )                                                                 
                                                                                                  
 concatenate_27 (Concatenate)   (None, 256, 256, 32  0           ['conv2d_transpose_27[0][0]',    
                                )                                 'conv2d_115[0][0]']             
                                                                                                  
 conv2d_130 (Conv2D)            (None, 256, 256, 16  4624        ['concatenate_27[0][0]']         
                                )                                                                 
                                                                                                  
 dropout_62 (Dropout)           (None, 256, 256, 16  0           ['conv2d_130[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_131 (Conv2D)            (None, 256, 256, 16  2320        ['dropout_62[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_132 (Conv2D)            (None, 256, 256, 3)  51          ['conv2d_131[0][0]']             
                                                                                                  
==================================================================================================
Total params: 1,941,139
Trainable params: 1,941,139
Non-trainable params: 0
__________________________________________________________________________________________________
In [247]:
X_train.shape, y_train.shape, X_test.shape, y_test.shape
Out[247]:
((1383, 256, 256, 3),
 (1383, 256, 256, 3),
 (154, 256, 256, 3),
 (154, 256, 256, 3))
Model was trained on kaggle, and i have downloaded the weight file will do prediction here¶
In [ ]:
"""
 
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()

"""
In [ ]:
"""
history = model.fit(X_train, y_train, 
                    batch_size = 16, 
                    verbose=1, 
                    epochs=50, 
                    validation_data=(X_test, y_test), 
                    #class_weight=weights, 
                    shuffle=False) # Lets train for now without giving class weight

"""
In [255]:
model = multi_unet_model(n_classes=3, IMG_HEIGHT=256, IMG_WIDTH=256, IMG_CHANNELS=3)
In [260]:
from keras.models import load_model
model.load_weights("/Users/bimle/Desktop/Application/AIRA_Matrix/models/instance_seg_epoch_50_accuracy_91_3classes_RGB_img_mask.hdf5")

I have cropped these graph from kaggle notebook and shown here¶

In [4]:
import cv2
train_loss = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/training_loss.png")
train_loss = cv2.cvtColor(train_loss, cv2.COLOR_BGR2RGB)
train_acc = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/training_accuracy.png")
train_acc = cv2.cvtColor(train_acc, cv2.COLOR_BGR2RGB)
In [10]:
import  matplotlib.pyplot as plt
plt.figure(figsize=(60, 30))
plt.subplot(121)
plt.title("Training loss")
plt.imshow(train_loss)
Out[10]:
<matplotlib.image.AxesImage at 0x7fe65c281630>
In [12]:
plt.figure(figsize=(60, 30))
plt.subplot(122)
plt.title("Training Accuracy")
plt.imshow(train_acc)
plt.show()

Predicting for first Image¶

In [261]:
val_img1 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Image/val_img1.png")
val_img1 = cv2.cvtColor(val_img1, cv2.COLOR_BGR2RGB)
val_mask1 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Mask/val_mask1.png")
val_mask1 = cv2.cvtColor(val_mask1, cv2.COLOR_BGR2RGB)
In [262]:
print(f"val image shape : {val_img1.shape} and mask shape: {val_mask1.shape}")
val image shape : (18432, 6656, 3) and mask shape: (18432, 6656, 3)
In [263]:
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Image")
plt.imshow(val_img1)
plt.subplot(122)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.show()
In [264]:
patch_size = 256
patches_img = patchify(val_img1, (patch_size, patch_size, 3), step=patch_size)  #Step=256 for 256 patches means no overlap
patches_img = patches_img[:,:,0,:,:,:]

patched_prediction = []
for i in range(patches_img.shape[0]):
    for j in range(patches_img.shape[1]):
        
        single_patch_img = patches_img[i,j,:,:,:]
        single_patch_img = np.expand_dims(single_patch_img, axis=0)
        pred = model.predict(single_patch_img)
        pred = np.argmax(pred, axis=3)
        pred = pred[0, :,:]
                                 
        patched_prediction.append(pred)

patched_prediction = np.array(patched_prediction)
patched_prediction = np.reshape(patched_prediction, [patches_img.shape[0], patches_img.shape[1], 
                                            patches_img.shape[2], patches_img.shape[3]])

pred_mask_img1 = unpatchify(patched_prediction, (val_img1.shape[0], val_img1.shape[1]))
1/1 [==============================] - 0s 411ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 146ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 114ms/step
1/1 [==============================] - 0s 111ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 134ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 116ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 114ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 112ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
In [265]:
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(122)
plt.title("Predicted Mask")  # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1)
plt.show()

Lets convert our predicted mask back to RGB format, So it will look good¶

In [266]:
def label_to_rgb(predicted_image):
    
    Black = np.array([0,0,0])  ## Color code for each classes
    Red = np.array([255,0,0])
    Yellow = np.array([255,255,0])
    
    segmented_img_rgb = np.empty((predicted_image.shape[0], predicted_image.shape[1], 3))
    
    segmented_img_rgb[(predicted_image == 0)] = Black
    segmented_img_rgb[(predicted_image == 1)] = Red
    segmented_img_rgb[(predicted_image == 2)] = Yellow
    
    segmented_img_rgb = segmented_img_rgb.astype(np.uint8)
    return(segmented_img_rgb)
In [267]:
pred_mask_img1_rgb = label_to_rgb(pred_mask_img1)
In [268]:
plt.figure(figsize=(30, 30))
plt.subplot(121)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(122)
plt.title("Predicted Mask in RGB")  # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1_rgb)
plt.show()
In [270]:
plt.figure(figsize=(30, 30))
plt.subplot(131)
plt.title("Validation Image")
plt.imshow(val_img1)
plt.subplot(132)
plt.title("Validation Mask")
plt.imshow(val_mask1)
plt.subplot(133)
plt.title("Predicted Mask in RGB")  # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img1_rgb)
plt.show()

Predicting for second image¶

In [273]:
val_img2 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Image/val_img2.png")
val_img2 = cv2.cvtColor(val_img2, cv2.COLOR_BGR2RGB)
val_mask2 = cv2.imread("/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/Valid_Mask/val_mask2.png")
val_mask2 = cv2.cvtColor(val_mask2, cv2.COLOR_BGR2RGB)
In [274]:
print(f"val image shape : {val_img2.shape} and mask shape: {val_mask2.shape}")
val image shape : (16896, 3584, 3) and mask shape: (16896, 3584, 3)
In [275]:
patch_size = 256
patches_img = patchify(val_img2, (patch_size, patch_size, 3), step=patch_size)  #Step=256 for 256 patches means no overlap
patches_img = patches_img[:,:,0,:,:,:]

patched_prediction = []
for i in range(patches_img.shape[0]):
    for j in range(patches_img.shape[1]):
        
        single_patch_img = patches_img[i,j,:,:,:]
        single_patch_img = np.expand_dims(single_patch_img, axis=0)
        pred = model.predict(single_patch_img)
        pred = np.argmax(pred, axis=3)
        pred = pred[0, :,:]
                                 
        patched_prediction.append(pred)

patched_prediction2 = np.array(patched_prediction)
patched_prediction2 = np.reshape(patched_prediction2, [patches_img.shape[0], patches_img.shape[1], 
                                            patches_img.shape[2], patches_img.shape[3]])

pred_mask_img2 = unpatchify(patched_prediction2, (val_img2.shape[0], val_img2.shape[1]))
1/1 [==============================] - 0s 144ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 115ms/step
1/1 [==============================] - 0s 112ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 110ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 113ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 121ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 119ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 118ms/step
1/1 [==============================] - 0s 110ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 123ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 120ms/step
1/1 [==============================] - 0s 118ms/step
1/1 [==============================] - 0s 116ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 110ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 112ms/step
1/1 [==============================] - 0s 115ms/step
1/1 [==============================] - 0s 126ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 132ms/step
1/1 [==============================] - 0s 149ms/step
1/1 [==============================] - 0s 137ms/step
1/1 [==============================] - 0s 113ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 117ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 95ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 94ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 99ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 114ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 71ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 102ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 108ms/step
1/1 [==============================] - 0s 107ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 92ms/step
1/1 [==============================] - 0s 93ms/step
1/1 [==============================] - 0s 105ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 103ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 96ms/step
1/1 [==============================] - 0s 98ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 100ms/step
1/1 [==============================] - 0s 106ms/step
1/1 [==============================] - 0s 104ms/step
1/1 [==============================] - 0s 97ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 101ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 109ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 89ms/step
1/1 [==============================] - 0s 72ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 82ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 91ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 90ms/step
1/1 [==============================] - 0s 83ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 88ms/step
1/1 [==============================] - 0s 86ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 85ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 73ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 79ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 84ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 81ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 77ms/step
1/1 [==============================] - 0s 74ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 78ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 80ms/step
1/1 [==============================] - 0s 76ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 75ms/step
1/1 [==============================] - 0s 87ms/step
1/1 [==============================] - 0s 78ms/step
In [277]:
pred_mask_img2_rgb = label_to_rgb(pred_mask_img2) ## Converting label to rgb
In [278]:
plt.figure(figsize=(30, 30))
plt.subplot(131)
plt.title("Validation Image")
plt.imshow(val_img2)
plt.subplot(132)
plt.title("Validation Mask")
plt.imshow(val_mask2)
plt.subplot(133)
plt.title("Predicted Mask in RGB")  # This mask is in gray scale, Later i will convert it into rgb.
plt.imshow(pred_mask_img2_rgb)
plt.show()

Calculating different metrics for this prediction¶

In [279]:
from keras.metrics import MeanIoU
In [281]:
n_classes = 3
IOU_keras = MeanIoU(num_classes=n_classes)  

Validation Image 1 IOU calculations¶

In [295]:
img1_mask_cat = rgb_to_2D_label(val_mask1)  # y_true
In [284]:
img1_mask_cat.shape # y_true
Out[284]:
(18432, 6656)
In [283]:
np.unique(img1_mask_cat) # y_true
Out[283]:
array([0, 1, 2], dtype=uint8)
In [285]:
print(f"pred_mask_img1 unique value: {np.unique(pred_mask_img1)} and shape is {pred_mask_img1.shape}")
pred_mask_img1 unique value: [0 1 2] and shape is (18432, 6656)
In [286]:
IOU_keras.update_state(img1_mask_cat, pred_mask_img1)
print("Mean IoU =", IOU_keras.result().numpy())
Mean IoU = 0.8095667
In [287]:
values = np.array(IOU_keras.get_weights()).reshape(n_classes, n_classes)
print(values)
[[1.6777216e+07 0.0000000e+00 1.8847100e+05]
 [4.7700000e+02 4.3050780e+06 3.0587300e+05]
 [2.7622680e+06 9.2378900e+05 1.6777216e+07]]
In [288]:
total = np.sum(values)
print(total)
42040388.0
In [291]:
Black_IoU = values[0,0]/(values[0,0] + values[0,1] + values[0,2]) 
Red_IoU = values[1,1]/(values[1,1] + values[1,0] + values[1,2]) 
Yellow_IoU = values[2,2]/(values[2,2] + values[2,0] + values[2,1]) 
In [292]:
print("IoU for Black is: ", Black_IoU)
print("IoU for Red is: ", Red_IoU)
print("IoU for Yellow is: ", Yellow_IoU)
IoU for Black is:  0.988891
IoU for Red is:  0.9335672
IoU for Yellow is:  0.81986964

Validation image 2 IOU calculation¶

In [294]:
img2_mask_cat = rgb_to_2D_label(val_mask2)
IOU_keras.update_state(img2_mask_cat, pred_mask_img2)
print("Mean IoU =", IOU_keras.result().numpy())
values = np.array(IOU_keras.get_weights()).reshape(n_classes, n_classes)
print(values)
Black_IoU = values[0,0]/(values[0,0] + values[0,1] + values[0,2]) 
Red_IoU = values[1,1]/(values[1,1] + values[1,0] + values[1,2]) 
Yellow_IoU = values[2,2]/(values[2,2] + values[2,0] + values[2,1]) 
print("IoU for Black is: ", Black_IoU)
print("IoU for Red is: ", Red_IoU)
print("IoU for Yellow is: ", Yellow_IoU)
Mean IoU = 0.82209796
[[3.3554432e+07 4.6186000e+04 1.3474300e+06]
 [9.6800000e+02 1.4181677e+07 9.7629900e+05]
 [4.1613430e+06 1.7723360e+06 2.8123358e+07]]
IoU for Black is:  0.9601232
IoU for Red is:  0.935532
IoU for Yellow is:  0.82577235

Lets calculatte dice coefficients for both the validation images for all 3 classes¶

In [303]:
def dice_coef(y_true, y_pred):
    y_true_f = y_true.flatten()
    y_pred_f = y_pred.flatten()
    intersection = np.sum(y_true_f * y_pred_f)
    smooth = 0.0001
    return (2. * intersection + smooth) / (np.sum(y_true_f) + np.sum(y_pred_f) + smooth)

def dice_coef_multilabel(y_true, y_pred, numLabels):
    dice_list = []
    for index in range(numLabels):
        dice = 0
        dice = dice_coef(y_true[:,:,index], y_pred[:,:,index])
        dice_list.append(dice)
    return dice_list

Dice Metrics calculation for validation image 1¶

In [300]:
img1_mask_cat.shape, pred_mask_img1.shape, n_classes
Out[300]:
((18432, 6656), (18432, 6656), 3)
In [304]:
img1_mask_cat_oneHot = to_categorical(img1_mask_cat, num_classes=n_classes)
pred_mask_img1_oneHot = to_categorical(pred_mask_img1, num_classes=n_classes)
print(f"img1_mask_cat_oneHot : {img1_mask_cat_oneHot.shape} and pred_mask_img1_oneHot: {pred_mask_img1_oneHot.shape}")
img1_mask_cat_oneHot : (18432, 6656, 3) and pred_mask_img1_oneHot: (18432, 6656, 3)
In [306]:
dice_list_val_img1 = dice_coef_multilabel(img1_mask_cat_oneHot,pred_mask_img1_oneHot,n_classes)
print(dice_list_val_img1)
[0.9848813920738788, 0.8749896217554962, 0.896466217247955]

Dice Metrics calculation for validation image 2¶

In [309]:
img2_mask_cat = rgb_to_2D_label(val_mask2)
In [310]:
img2_mask_cat_oneHot = to_categorical(img2_mask_cat, num_classes=n_classes)
pred_mask_img2_oneHot = to_categorical(pred_mask_img2, num_classes=n_classes)
print(f"img2_mask_cat_oneHot : {img2_mask_cat_oneHot.shape} and pred_mask_img2_oneHot: {pred_mask_img2_oneHot.shape}")
img2_mask_cat_oneHot : (16896, 3584, 3) and pred_mask_img2_oneHot: (16896, 3584, 3)
In [311]:
dice_list_val_img1 = dice_coef_multilabel(img2_mask_cat_oneHot,pred_mask_img2_oneHot,n_classes)
print(dice_list_val_img1)
[0.9643297399154721, 0.9265602906877212, 0.8476983253802615]
In [333]:
## This is the results generated :

Dice_matrix = [[    "          Black       ", "       Red    ",    "      Yellow       ", '  Avg Dice '],
               ['Img1  '  ,0.9848813920738788, 0.8749896217554962, 0.896466217247955,          0.918],
               ['Img2  '  ,0.9643297399154721, 0.9265602906877212, 0.8476983253802615,         0.912],
               ["Avg Dice", 0.974,           0.9,                       0.871,                 0.915    ],
              ]

Note : I have generated the results with accuracy of 91.5 %, Accuracy given in Assignment was 88 %, So this is about 4 percent enhancement on the base accuracy. I achieved this just by putting selection creteria having atleast two classes in mask while saving patches.¶

Next step will be following :-¶

1. Train model by data aumentation¶

2 . Train model with focal loss function¶

3 . Train model by taking combination of loss function¶

4. Train model by taking loss at different level of UNET and back propagating that loss in network, Take the out from encoder as well as decoder part in each level and calculate the dice or focal loss and use this loss to train the model, For this purpose i will train model using gradient tape instead of general fit method¶

In [ ]:
 

Basic Exploration and Analysis (Not Part of Final Results)¶

Encoding the mask¶

In [116]:
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
In [117]:
n, h, w = train_masks.shape
train_masks_reshaped = train_masks.reshape(-1,1) ## Flattening the images as encoding works only on 1-D array
print(n,h,w)
print(train_masks_reshaped.shape)
5680 256 256
(372244480, 1)
In [118]:
train_masks_reshaped_encoded = labelencoder.fit_transform(train_masks_reshaped)
train_masks_reshaped_encoded.shape
Out[118]:
(372244480,)
In [119]:
train_masks_encoded_original_shape = train_masks_reshaped_encoded.reshape(n, h, w)
train_masks_encoded_original_shape.shape
Out[119]:
(5680, 256, 256)
In [120]:
np.unique(train_masks_encoded_original_shape)
Out[120]:
array([0, 1, 2])
In [121]:
train_images = np.expand_dims(train_images, axis=3)
In [122]:
train_images.shape
Out[122]:
(5680, 256, 256, 1)
In [123]:
train_masks_input = np.expand_dims(train_masks_encoded_original_shape, axis=3)
train_masks_input.shape
Out[123]:
(5680, 256, 256, 1)
In [124]:
from sklearn.model_selection import train_test_split
X1, X_test, y1, y_test = train_test_split(train_images, train_masks_input, test_size = 0.10, random_state = 0)

#Further split training data t a smaller subset for quick testing of models
X_train, X_do_not_use, y_train, y_do_not_use = train_test_split(X1, y1, test_size = 0.2, random_state = 0)

print("Class values in the dataset are ... ", np.unique(y_train))  # 0 is the background/few unlabeled 
Class values in the dataset are ...  [0 1 2]
In [125]:
X1.shape, X_test.shape, y1.shape, y_test.shape
Out[125]:
((5112, 256, 256, 1),
 (568, 256, 256, 1),
 (5112, 256, 256, 1),
 (568, 256, 256, 1))
In [126]:
X_train.shape, X_do_not_use.shape, y_train.shape, y_do_not_use.shape
Out[126]:
((4089, 256, 256, 1),
 (1023, 256, 256, 1),
 (4089, 256, 256, 1),
 (1023, 256, 256, 1))

Doing one hot encoding¶

In [127]:
from keras.utils import to_categorical
train_masks_cat = to_categorical(y_train, num_classes=n_classes)
y_train_cat = train_masks_cat.reshape((y_train.shape[0], y_train.shape[1], y_train.shape[2], n_classes))


test_masks_cat = to_categorical(y_test, num_classes=n_classes)
y_test_cat = test_masks_cat.reshape((y_test.shape[0], y_test.shape[1], y_test.shape[2], n_classes))
In [130]:
IMG_HEIGHT = X_train.shape[1]
IMG_WIDTH  = X_train.shape[2]
IMG_CHANNELS = X_train.shape[3]
print(IMG_HEIGHT,IMG_WIDTH,IMG_CHANNELS)
256 256 1
In [132]:
model = multi_unet_model()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
Model: "model_1"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_2 (InputLayer)           [(None, 256, 256, 1  0           []                               
                                )]                                                                
                                                                                                  
 lambda_1 (Lambda)              (None, 256, 256, 1)  0           ['input_2[0][0]']                
                                                                                                  
 conv2d_19 (Conv2D)             (None, 256, 256, 16  160         ['lambda_1[0][0]']               
                                )                                                                 
                                                                                                  
 dropout_9 (Dropout)            (None, 256, 256, 16  0           ['conv2d_19[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_20 (Conv2D)             (None, 256, 256, 16  2320        ['dropout_9[0][0]']              
                                )                                                                 
                                                                                                  
 max_pooling2d_4 (MaxPooling2D)  (None, 128, 128, 16  0          ['conv2d_20[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_21 (Conv2D)             (None, 128, 128, 32  4640        ['max_pooling2d_4[0][0]']        
                                )                                                                 
                                                                                                  
 dropout_10 (Dropout)           (None, 128, 128, 32  0           ['conv2d_21[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_22 (Conv2D)             (None, 128, 128, 32  9248        ['dropout_10[0][0]']             
                                )                                                                 
                                                                                                  
 max_pooling2d_5 (MaxPooling2D)  (None, 64, 64, 32)  0           ['conv2d_22[0][0]']              
                                                                                                  
 conv2d_23 (Conv2D)             (None, 64, 64, 64)   18496       ['max_pooling2d_5[0][0]']        
                                                                                                  
 dropout_11 (Dropout)           (None, 64, 64, 64)   0           ['conv2d_23[0][0]']              
                                                                                                  
 conv2d_24 (Conv2D)             (None, 64, 64, 64)   36928       ['dropout_11[0][0]']             
                                                                                                  
 max_pooling2d_6 (MaxPooling2D)  (None, 32, 32, 64)  0           ['conv2d_24[0][0]']              
                                                                                                  
 conv2d_25 (Conv2D)             (None, 32, 32, 128)  73856       ['max_pooling2d_6[0][0]']        
                                                                                                  
 dropout_12 (Dropout)           (None, 32, 32, 128)  0           ['conv2d_25[0][0]']              
                                                                                                  
 conv2d_26 (Conv2D)             (None, 32, 32, 128)  147584      ['dropout_12[0][0]']             
                                                                                                  
 max_pooling2d_7 (MaxPooling2D)  (None, 16, 16, 128)  0          ['conv2d_26[0][0]']              
                                                                                                  
 conv2d_27 (Conv2D)             (None, 16, 16, 256)  295168      ['max_pooling2d_7[0][0]']        
                                                                                                  
 dropout_13 (Dropout)           (None, 16, 16, 256)  0           ['conv2d_27[0][0]']              
                                                                                                  
 conv2d_28 (Conv2D)             (None, 16, 16, 256)  590080      ['dropout_13[0][0]']             
                                                                                                  
 conv2d_transpose_4 (Conv2DTran  (None, 32, 32, 128)  131200     ['conv2d_28[0][0]']              
 spose)                                                                                           
                                                                                                  
 concatenate_4 (Concatenate)    (None, 32, 32, 256)  0           ['conv2d_transpose_4[0][0]',     
                                                                  'conv2d_26[0][0]']              
                                                                                                  
 conv2d_29 (Conv2D)             (None, 32, 32, 128)  295040      ['concatenate_4[0][0]']          
                                                                                                  
 dropout_14 (Dropout)           (None, 32, 32, 128)  0           ['conv2d_29[0][0]']              
                                                                                                  
 conv2d_30 (Conv2D)             (None, 32, 32, 128)  147584      ['dropout_14[0][0]']             
                                                                                                  
 conv2d_transpose_5 (Conv2DTran  (None, 64, 64, 64)  32832       ['conv2d_30[0][0]']              
 spose)                                                                                           
                                                                                                  
 concatenate_5 (Concatenate)    (None, 64, 64, 128)  0           ['conv2d_transpose_5[0][0]',     
                                                                  'conv2d_24[0][0]']              
                                                                                                  
 conv2d_31 (Conv2D)             (None, 64, 64, 64)   73792       ['concatenate_5[0][0]']          
                                                                                                  
 dropout_15 (Dropout)           (None, 64, 64, 64)   0           ['conv2d_31[0][0]']              
                                                                                                  
 conv2d_32 (Conv2D)             (None, 64, 64, 64)   36928       ['dropout_15[0][0]']             
                                                                                                  
 conv2d_transpose_6 (Conv2DTran  (None, 128, 128, 32  8224       ['conv2d_32[0][0]']              
 spose)                         )                                                                 
                                                                                                  
 concatenate_6 (Concatenate)    (None, 128, 128, 64  0           ['conv2d_transpose_6[0][0]',     
                                )                                 'conv2d_22[0][0]']              
                                                                                                  
 conv2d_33 (Conv2D)             (None, 128, 128, 32  18464       ['concatenate_6[0][0]']          
                                )                                                                 
                                                                                                  
 dropout_16 (Dropout)           (None, 128, 128, 32  0           ['conv2d_33[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_34 (Conv2D)             (None, 128, 128, 32  9248        ['dropout_16[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_transpose_7 (Conv2DTran  (None, 256, 256, 16  2064       ['conv2d_34[0][0]']              
 spose)                         )                                                                 
                                                                                                  
 concatenate_7 (Concatenate)    (None, 256, 256, 32  0           ['conv2d_transpose_7[0][0]',     
                                )                                 'conv2d_20[0][0]']              
                                                                                                  
 conv2d_35 (Conv2D)             (None, 256, 256, 16  4624        ['concatenate_7[0][0]']          
                                )                                                                 
                                                                                                  
 dropout_17 (Dropout)           (None, 256, 256, 16  0           ['conv2d_35[0][0]']              
                                )                                                                 
                                                                                                  
 conv2d_36 (Conv2D)             (None, 256, 256, 16  2320        ['dropout_17[0][0]']             
                                )                                                                 
                                                                                                  
 conv2d_37 (Conv2D)             (None, 256, 256, 3)  51          ['conv2d_36[0][0]']              
                                                                                                  
==================================================================================================
Total params: 1,940,851
Trainable params: 1,940,851
Non-trainable params: 0
__________________________________________________________________________________________________
In [ ]:
history = model.fit(X_train, y_train_cat, 
                    batch_size = 16, 
                    verbose=1, 
                    epochs=50, 
                    validation_data=(X_test, y_test_cat), 
                    #class_weight=class_weights,
                    shuffle=False)
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [ ]:
 
In [129]:
from sklearn.utils import class_weight
class_weights = class_weight.compute_class_weight('balanced',
                                                 np.unique(train_masks_reshaped_encoded),
                                                 train_masks_reshaped_encoded)
print("Class weights are...:", class_weights)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [129], in <cell line: 2>()
      1 from sklearn.utils import class_weight
----> 2 class_weights = class_weight.compute_class_weight('balanced',
      3                                                  np.unique(train_masks_reshaped_encoded),
      4                                                  train_masks_reshaped_encoded)
      5 print("Class weights are...:", class_weights)

TypeError: compute_class_weight() takes 1 positional argument but 3 were given
In [ ]:
 
In [ ]:
 
In [69]:
"""
img_size = (512,512)
def trainImageMaskAug(train_path,image_folder,mask_folder,aug_dict,image_color_mode = "rgb",
                    mask_color_mode = "rgb",image_save_prefix  = "aug_image",mask_save_prefix  = "aug_mask",save_to_dir = None,target_size = img_size,seed = 1):
    '''
    can generate image and mask at the same time
    use the same seed for image_datagen and mask_datagen to ensure the transformation for image and mask is the same
    if you want to visualize the results of generator, set save_to_dir = "your path"
    '''
    image_datagen = ImageDataGenerator(**aug_dict)
    mask_datagen = ImageDataGenerator(**aug_dict)
    image_generator = image_datagen.flow_from_directory(
        train_path,
        color_mode = image_color_mode,
        target_size = target_size,
        save_to_dir = save_to_dir,
        save_prefix  = image_save_prefix,
        class_mode=None,
        seed = seed)
    mask_generator = mask_datagen.flow_from_directory(
        train_path,
        color_mode = mask_color_mode,
        target_size = target_size,
        save_to_dir = save_to_dir,
        save_prefix  = mask_save_prefix,
        class_mode=None,
        seed = seed)
        
"""

Data Preparation and Exploration¶

In [70]:
original_data_dir = "/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data/"
In [71]:
# resizing image to 512*512
save_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"
if not os.path.exists(save_path):
    os.makedirs(save_path)
images = os.listdir(original_data_dir+'/Train_Image/')
numimg = len(images)
print(numimg)
for num1 in range(numimg):
    path2 = original_data_dir +'/Train_Image/'+ images[num1]
    print(path2)
    img = cv2.imread(path2)   
    img = cv2.resize(img, (512, 512), interpolation = cv2.INTER_LINEAR)
    path = save_path + images[num1]
    
    cv2.imwrite(path, img)
5
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/e96abe7cf94b26fff31bc9d9ab8820f5.png
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/c614dc18ffa37f8007c2aead39e65342.png
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/111b574b0f3bed1be6764860d7ea7adf.png
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/775d39466b474d54ae714215034c5a83.png
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Image/5456189d4e5c15a790a868b70fd25625.png
In [ ]:
 
In [72]:
# Doing Image augmentation to generate more sample as currently only having 5 images.
save_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/aug_image_512/"
#img_source_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"

Image data augmnetation¶

In [73]:
data_gen_args = dict(rotation_range=0.3,
                     rescale=1./255,
                    width_shift_range=0.2,
                    height_shift_range=0.2,
                    shear_range=0.1,
                    zoom_range=[0.7,1],
                    horizontal_flip=True,
                    vertical_flip=True,
                    fill_mode='nearest')
PATH='/Users/bimle/Desktop/Desktop/AIRA_Matrix/'
In [74]:
save_to_dir = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/aug_image_512/"
In [75]:
trainImageMaskAug(PATH,"train_image_512","train_mask_512",
                  data_gen_args,mask_save_prefix  = "aug_mask",save_to_dir = save_to_dir,target_size = img_size,seed = 1)
Found 10 images belonging to 4 classes.
Found 10 images belonging to 4 classes.

Data Preparation for training¶

In [76]:
SIZE_X = 256 
SIZE_Y = 256
n_classes=3 #Number of classes for segmentation
train_img_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_image_512/"
train_mask_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_mask_512/"
#Capture training image info as a list
train_images = []


for img_path in glob.glob(os.path.join(train_img_path, "*.png")):
    img = cv2.imread(img_path,0)
    #print(img.shape)
    #img = cv2.resize(img, (SIZE_Y, SIZE_X))
    train_images.append(img)
       
#Convert list to array for machine learning processing        
train_images = np.array(train_images)

#Capture mask/label info as a list
train_masks = [] 

for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
    mask = cv2.imread(mask_path,0)       
    #mask = cv2.resize(mask, (SIZE_Y, SIZE_X), interpolation = cv2.INTER_NEAREST)  #Otherwise ground truth changes due to interpolation
    train_masks.append(mask)
    
train_masks = np.array(train_masks)

Exploring Original image mask¶

In [88]:
# This is original mask image
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
    mask = cv2.imread(mask_path)
    plt.imshow(mask)
    plt.show()
    print(f"Shape of original mask is :{mask.shape}")
    print(f"Unique value in mask shape is {np.unique(mask)}")
Shape of original mask is :(7424, 2816, 3)
Unique value in mask shape is [  0 255]
Shape of original mask is :(9216, 10496, 3)
Unique value in mask shape is [  0 255]
Shape of original mask is :(14592, 12800, 3)
Unique value in mask shape is [  0 255]
Shape of original mask is :(18432, 3584, 3)
Unique value in mask shape is [  0 255]
Shape of original mask is :(6144, 3840, 3)
Unique value in mask shape is [  0 255]
In [101]:
img_dim = [7424, 2816,9216, 10496,14592, 12800,18432, 3584,6144, 3840]
img_dim_div_check = [i/256 for i in img_dim]
img_dim_div_check
Out[101]:
[29.0, 11.0, 36.0, 41.0, 57.0, 50.0, 72.0, 14.0, 24.0, 15.0]

From just above results, I can see that image dimension is multiple of 256, so can easily make patches of this images.¶

In [86]:
# Do above for the resized mask image
train_mask_resized_path = "/Users/bimle/Desktop/Desktop/AIRA_Matrix/train_mask_512/"

for mask_path in glob.glob(os.path.join(train_mask_resized_path, "*.png")):
    mask = cv2.imread(mask_path)
    print(f"Shape of resized mask is :{mask.shape}")
    print(f"Unique value in resized mask  is {np.unique(mask)}")
Shape of resized mask is :(512, 512, 3)
Unique value in resized mask  is [  0  16  48  64 112 143 191 207 239 255]
Shape of resized mask is :(512, 512, 3)
Unique value in resized mask  is [  0  64 191 255]
Shape of resized mask is :(512, 512, 3)
Unique value in resized mask  is [  0  64 191 255]
Shape of resized mask is :(512, 512, 3)
Unique value in resized mask  is [  0 128 255]
Shape of resized mask is :(512, 512, 3)
Unique value in resized mask  is [  0  32  64  96 127 128 159 191 223 255]
In [77]:
print(f"train_images shape: {train_images.shape} and max value is: {train_images.max()}")
print(f"train_mask shape: {train_masks.shape} and max value is: {train_masks.max()}")
train_images shape: (5, 512, 512) and max value is: 255
train_mask shape: (5, 512, 512) and max value is: 225

As our image size is very large, so lets crop to its nar original shape which is divisible by 256*256. It will be easy to patchify and unpatchify¶

In [93]:
# This is original mask image
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
    print(mask_path)
    mask = cv2.imread(mask_path, cv2.IMREAD_COLOR)

    plt.imshow(mask)
    plt.show()
    print(f"Shape of original mask is :{mask.shape}")
    print(f"Unique value in mask shape is {np.unique(mask)}")
    break
/Users/bimle/Desktop/Application/AIRA_Matrix/Segmentation_Data//Train_Mask/img1_mask.png
Shape of original mask is :(14592, 12800, 3)
Unique value in mask shape is [  0 255]
In [95]:
image_rgb = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
plt.imshow(image_rgb)
Out[95]:
<matplotlib.image.AxesImage at 0x7fad77941ab0>
In [ ]:
train_mask_path = original_data_dir + "/Train_Mask/"
for mask_path in glob.glob(os.path.join(train_mask_path, "*.png")):
    print(mask_path)
    mask = cv2.imread(mask_path, cv2.IMREAD_COLOR)

    plt.imshow(mask)
    plt.show()
    print(f"Shape of original mask is :{mask.shape}")
    print(f"Unique value in mask shape is {np.unique(mask)}")
    break
In [96]:
14592/256
Out[96]:
57.0
In [97]:
12800/256
Out[97]:
50.0

Encoding mask images¶

In [78]:
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
In [79]:
n, h, w = train_masks.shape
print(n,h,w)
5 512 512
In [84]:
np.unique(train_masks)
Out[84]:
array([  0,  14,  19,  28,  38,  42,  47,  56,  57,  66,  76,  85,  95,
        99, 104, 113, 126, 132, 140, 141, 150, 151, 160, 169, 183, 188,
       197, 207, 211, 216, 225], dtype=uint8)
In [80]:
train_masks_reshaped = train_masks.reshape(-1,1)
train_masks_reshaped.shape
Out[80]:
(1310720, 1)
In [81]:
train_masks_reshaped_encoded = labelencoder.fit_transform(train_masks_reshaped)
train_masks_reshaped_encoded.shape
Out[81]:
(1310720,)
In [82]:
train_masks_encoded_original_shape = train_masks_reshaped_encoded.reshape(n, h, w)
train_masks_encoded_original_shape.shape
Out[82]:
(5, 512, 512)
In [83]:
np.unique(train_masks_encoded_original_shape)
Out[83]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30])

From above results, we can see that encoding will not work if we resize the images and try to train it.¶

In [ ]:
 
In [ ]: